package com.istock.union.user.security;

import com.istock.base.common.api.model.ApiBaseResponse;
import com.istock.union.user.model.SSOUser;
import com.istock.union.user.service.TokenService;

/**
 * 内部的tokenService
 * @author senvon
 *
 */
public interface InnerTokenService extends TokenService {

	/**生成一个token,并存储
	 * @param ssoUser
	 * @param checkLoginCount 是否要进行登录次数的检查
	 * 					true,页面常见的登录,会受制于登录次数,如果一个用户超过登录次数,会自动T掉最老的token
	 * 					false,非页面的登录,一般用于打开当前系统的某一个页面,而临时申请的token
	 * @return
	 */
	public ApiBaseResponse<String> generateToken(SSOUser ssoUser , boolean checkLoginCount);
	
	/**通过当前的token,得到token的存储模型
	 * @param token
	 * @return
	 */
	public SSOUser findTokenModel(String token);
	
	/**保存token的存储模型
	 * @param tokenModel
	 */
	public void saveTokenModel(SSOUser ssoUser);
	
	/**将当前token设置为失效
	 * 退出是调用,确保存储里面的token及和token相关的数据失效
	 * @param token
	 */
	public void invalidToken(String token);
	
}
